<?php
	require_once( 'core_DataBaseConnect.php' );
	require_once( 'core_Response.php' );
	require_once( 'core_ErrorCode.php' );
	require_once( 'dao_MemberDAO.php' );
	require_once( '_configs.php' );
	
	/*
	* 일반 회원 가입
	*
	*/
	function func( $con, $post, $returnType )
	{
		$nickname 	= $post[ 'nickname' ];
		
		if( !is_null($post[ 'platform' ]) && !is_null($post[ 'token' ])  )
		{
			// 유형1. SNS 플랫폼 가입
			//1. 가입 중복 체크
			if( MemberDAO::isSamePlatformMember( $con, $post[ 'platform' ], $post[ 'token' ] ) )
			{
				return Response::FAIL( ErrorCode::ALREADY_ID, '동일한 플랫폼에 유저정보가 있습니다.', $returnType );
			}
			//2. 닉네임 중복 체크
			if( MemberDAO::isSameNickname( $con, $nickname ) )
			{
				return Response::FAIL( ErrorCode::ALREADY_NICKNAME, '닉네임이 중복됩니다.', $returnType );
			}
			
			//3. 등록
			$result = MemberDAO::insertMemberForPlatform( $con, 
															$post[ 'platform' ],
															$post[ 'token' ],
															$nickname,
															$post[ 'sex' ],
															$post[ 'birthYear' ],
															$post[ 'region' ],
															configs::AUTHOR_MEMBER );
			if( $result == 1 )
			{
				// 성공 -> 계정 seq 반환
				$response = array();
				$response[ 'seq' ] = $con->insert_id();
				return Response::SUCCESS( $response, $returnType );
			}else{
				return Response::FAIL( ErrorCode::FAIL_REGIST_MEMBER, '회원가입에 실패했습니다. 잠시후 다시 시도해 주세요.P', $returnType );
			}
		}else if( !is_null($post[ 'id' ]) && !is_null($post[ 'pass' ]) )
		{
			// 유형2. 일반 email 가입
			$id 		= $post[ 'id' ];
			
			//1. id 중복 체크
			if( MemberDAO::isSameID( $con, $id ) )
			{
				return Response::FAIL( ErrorCode::ALREADY_ID, '아이디가 중복됩니다.', $returnType );
			}
			//2. 닉네임 중복 체크
			if( MemberDAO::isSameNickname( $con, $nickname ) )
			{
				return Response::FAIL( ErrorCode::ALREADY_NICKNAME, '닉네임이 중복됩니다.', $returnType );
			}
			
			
			//3. 등록
			// 계정 생성 및 이메일 전송
			$activeKey = gen_activation_key( $id );
			$result = MemberDAO::insertMember( $con, 
												$id,
												sha1( $post[ 'pass' ] ),
												$nickname,
												$post[ 'sex' ],
												$post[ 'birthYear' ],
												$post[ 'region' ],
												configs::AUTHOR_MEMBER,
												$activeKey );
			if( $result == 1 )
			{
				// 성공 -> 메일 발송
				$mail = verificationMAIL( $id, $activeKey );
				if( $mail == false )
				{
					return Response::FAIL( ErrorCode::FAIL_SEND_EMAIL, '이메일 발송에 실패했습니다.', $returnType );
				}else{
					$response = array();
					
					// 메일 정보 붙이기
					foreach( $mail as $k=>$v )
					{
						$response[ $k ] = $v;
					}
					
					return Response::SUCCESS( $response, $returnType );
				}
			}else{
				return Response::FAIL( ErrorCode::FAIL_REGIST_MEMBER, '회원가입에 실패했습니다. 잠시후 다시 시도해 주세요.', $returnType );
			}
		}else{
			return Response::FAIL( ErrorCode::FAIL_REGIST_MEMBER, '회원가입에 실패했습니다. 잠시후 다시 시도해 주세요.', $returnType );
		}
	}
	
	// 키값 생성 함수
	function gen_activation_key($email)
	{   
		$generatedKey = sha1(mt_rand(10000,99999).time().$email);
		return $generatedKey;
	}
	
	
	// 승인 메일 보내기 함수
	function verificationMAIL($email,$key)
	{
		$to			= 'hanjd1983@gmail.com';//$email;
		$subject	= 'Verify your Email Address - '.configs::ACTIVEMAIL_SERVICE_TITLE;
		
		$headers 	= 'MIME-Version: 1.0' . "\r\n"
					.'Content-type: text/html; charset=UTF-8' . "\r\n"
					.'From: White Paper <'.configs::ACTIVEMAIL_DO_NOT_REPLY_MAIL.'>' . "\r\n";
		
		$link		 = configs::ACTIVEMAIL_MEMBER_ACTIVE_PAGE."?mail=".$email."&active=".$key;
		
		$mailMsg	='Thank you for registing White Paper Service!<br/><br/>'
					.'Please click this <a href="'.$link.'">link!</a>!';
		
		$r = mail($to,$subject,$mailMsg,$headers);
		
		if( $r )
		{
			$rtn = array();
			$rtn[ 'to' ] = $to;
			$rtn[ 'headers' ] = $headers;
			$rtn[ 'subject' ] = $subject;
			$rtn[ 'mailMsg' ] = $mailMsg;
			$rtn[ 'link' ] = $link;
			return $rtn;
		}
		return false;
	}
?>